Virtualization technologies have become widely used for sharing limited computer hardware resources. In a hardware virtualization environment, sometimes also referred to as a platform virtualization environment, one or more virtual machines can simulate a host computer with its own operating system. In particular, software executed on these virtual machines can be separated from the underlying hardware resources. As a result, virtual machines running on a same host computer can each have its own operating system. For example, a computer that is running Microsoft Windows operating system may host a virtual machine that simulates a computer running a Linux operating system, based on which Linux-based software can be executed.
Virtualization technologies are often used in the cloud computing context. Cloud computing environments can provide computing infrastructures that are abstracted from the underlying physical hardware. Cloud computing service providers can deliver cloud computing services (e.g., Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), Software-as-a-Service (SaaS), and storage services) by providing the ability to create virtual machines on demand. Such virtual machines can have defined attributes such as size, operating system, number of block devices, etc.
In a virtualization environment, a virtual machine can be associated with one or more volumes. A volume is a virtual resource accessible by virtual machines. For example, a volume can be a virtual disk or disks. A virtual disk can have disk partitions and a file system, similar to those of a physical disk. The file system of a virtual disk can also include files and folders. A volume can be a system volume or a bootable volume, which includes disk partitions, system files, a bootable operating system, and/or software applications. A volume can also be a data storage volume, which includes user disk storing user data such as user files and folders. A volume can be used as a virtual hard disk drive of a virtual machine. For various purposes, volumes can also be transmitted from a client device (e.g., a client device with XenDesktop) to a cloud computing device (e.g., a cloud storage) provided by a cloud computing service, or vice versa.
Currently, for transmitting volumes from client devices to cloud computing devices, cloud computing service providers have different mechanisms to allow volumes to be created on the cloud computing devices. The mechanisms are usually based on templates and some predefined workflows, and can vary widely between different cloud computing service providers. For example, some service providers require push operations being performed by the client devices to inject the volume into the cloud computing devices; while other service providers require pull operations being performing by using a Universal Resource Locator (URL). Moreover some service providers may not provide any mechanism for transmitting volumes into the cloud computing devices.
Further, in some cloud computing services, virtual machines of a cloud computing device can also restrict volume transmission based on the type of content stored in the volume to be transmitted (e.g., a volume storing bootable operating system or a volume storing user data). Moreover, in some cloud computing services, if multiple volumes are required to be transmitted on a particular virtual machine and the virtual machine becomes overloaded, it may de-prioritize the request for transmitting some of the volumes and delay transmitting the volumes. Sometimes, the delay can be unacceptable (e.g., 24 hours). As a result, a client device requesting the transmission may not be able to transmit the volumes into the cloud computing devices in a timely manner or as desired.